#pragma once
#include "CBitmapFont.h"
#include "IGameState.h"
#include "SGD Wrappers/SGD_Math.h"
#include <string>
using std::string;

class CMenuItem
{
	float m_fPosX;
	float m_fPosY;
	float m_fVelX;
	float m_fVelY;
	float m_fSize;
	CBitmapFont* m_bfFont;
	string m_szName;
	IGameState* m_gsTarget;
	float m_fTarPosX;
	float m_fTarPosY;
	tVector2D m_travelingVec;
public:
	CMenuItem();
	~CMenuItem();

	////////////////////////////////////////////////
	//	Accessors / Mutators
	float PosX() const { return m_fPosX; }
	void PosX(float val) { m_fPosX = val; }
	float PosY() const { return m_fPosY; }
	void PosY(float val) { m_fPosY = val; }
	float VelX() const { return m_fVelX; }
	void VelX(float val) { m_fVelX = val; }
	float VelY() const { return m_fVelY; }
	void VelY(float val) { m_fVelY = val; }
	string Name() const { return m_szName; }
	void Name(string val) { m_szName = val; }
	float Size() const { return m_fSize; }
	void Size(float val) { m_fSize = val; }
	//float Width() const {return (float)(m_bfFont->CellWidth() * m_szName.size());}
	//float Height() const {return (float)(m_bfFont->CellHeight() * m_szName.size());}
	CBitmapFont* Font() const { return m_bfFont; }
	void Font(CBitmapFont* val) { m_bfFont = val; }
	float TarPosX() const { return m_fTarPosX; }
	void TarPosX(float val) { m_fTarPosX = val; }
	float TarPosY() const { return m_fTarPosY; }
	void TarPosY(float val) { m_fTarPosY = val; }
	IGameState* Target() const { return m_gsTarget; }
	void Target(IGameState* val) { m_gsTarget = val; }
	//
	////////////////////////////////////////////////

	void Init(CBitmapFont* bfFont, float fPosX, float fPosY, char* szName, IGameState* gsTarget, float fSize);
	void Update(float fElapsedTime);
	void Render(bool bSelected = false);
	void GoTo(float fTarPosX, float fTarPosY);
};